parseLine | ::= | address_list ( "\r" )? "\n" |
parseAddressList0 | ::= | address_list <EOF> |
parseAddress0 | ::= | address <EOF> |
parseMailbox0 | ::= | mailbox <EOF> |
address_list | ::= | ( address )? ( "," ( address )? )* |
address | ::= | ( addr_spec | angle_addr | ( phrase ( group_body | angle_addr ) ) ) |
mailbox | ::= | ( addr_spec | angle_addr | name_addr ) |
name_addr | ::= | phrase angle_addr |
group_body | ::= | ":" ( mailbox )? ( "," ( mailbox )? )* ";" |
angle_addr | ::= | "<" ( route )? addr_spec ">" |
route | ::= | "@" domain ( ( "," )* "@" domain )* ":" |
phrase | ::= | ( <DOTATOM> | <QUOTEDSTRING> )+ |
addr_spec | ::= | ( local_part "@" domain ) |
local_part | ::= | ( <DOTATOM> | <QUOTEDSTRING> ) ( ( "." )? ( <DOTATOM> | <QUOTEDSTRING> ) )* |
domain | ::= | ( ( <DOTATOM> ( ( "." )? <DOTATOM> )* ) | <DOMAINLITERAL> ) |